# -*- coding = utf-8 -*-
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
import json

# 创建一个参数对象，用来控制Chrome以无界面模式打开
chromeOption = Options()
chromeOption.add_argument('--headless')
chromeOption.add_argument('--disable-gpu')
#  通过selenium.webdriver创建Chrome浏览器对象,加入无界面参数
web_browser = Chrome(options=chromeOption)
#  访问招聘网站
web_browser.get('http://www.techlabplt.com:8080/BD-PC/zhaopin.html')
#  睡2秒，让前端异步数据获取得到
time.sleep(2)

# 定义职位的两个搜索条件
search_job = ["python",
              "大数据"]

# JSON 文件的存储路径
json_file = open("./jobs.json", 'w')

for search_name in search_job:
    
    # 找到职位输入框，输入点击搜索按钮
    web_browser.find_element(by=By.XPATH, value='//*[@class="input"]').send_keys(search_name)
    # 找到搜索元素按钮，点击。
    el = web_browser.find_element(by=By.XPATH, value='//*[@id="app"]/div[1]/a')
    el.click()
    #  睡2秒，让前端异步数据获取得到
    time.sleep(2)
    # 循环遍历10页数据
    for i in range(10):
        print("爬取职位名称为：" + search_name + "，第" + str(i+1) + "页执行中！")
        # 找到存放数据的位置，进行数据提取。
        # 找到页面中存放数据的所有li
        li_list = web_browser.find_elements(By.XPATH, '//*[@id="app"]/ul/li')
        for li in li_list:
            # 职位名称
            name = li.find_element(By.XPATH, './div[1]/a/div[1]/span[1]').text
            # 薪资
            salary = li.find_element(By.XPATH, './div[1]/a/div[2]/span').text
            # 工作经验
            experience = li.find_element(By.XPATH, './div[1]/a/div[2]/ul/li[1]').text
            # 学历
            education = li.find_element(By.XPATH, './div[1]/a/div[2]/ul/li[2]').text
            # 公司名
            company_name = li.find_element(By.XPATH, './div[1]/div/div[2]/h3').text
            # 保存至JSON文件
            # 存储到jsonData对象中
            json_data = {
                "职位名称": name,
                "薪资": salary,
                "工作经验": experience,
                "学历": education,
                "公司名": company_name
            }
            # 把数据写入json文件
            job_json = json.dumps(json_data, ensure_ascii=False) + '\n'
            json_file.write(job_json)
        # 点击下一页按钮
        next_page = web_browser.find_element(By.XPATH, '//*[@id="app"]/div[2]/div/button[2]/i')
        next_page.click()
        # 每页之间，睡2秒
        time.sleep(2)

# 关闭web_browser ,关闭json文件
print("----------------整个爬虫程序结束------------------")
web_browser.close()
web_browser.quit()
json_file.close()
